'use strict';
const db = uniCloud.database();
const _ = db.command;

exports.main = async (event, context) => {
  const { id } = event;
  
  try {
    // 验证壁纸ID
    if (!id || typeof id !== 'string') {
      return {
        code: 400,
        message: '壁纸ID无效'
      };
    }
    
    // 获取壁纸详情
    const wallpaperRes = await db.collection('wallpapers').doc(id).get();
    if (!wallpaperRes.data) {
      return {
        code: 404,
        message: '壁纸不存在'
      };
    }
    console.log('壁纸详情🧵',wallpaperRes);
    // 检查壁纸状态，只返回已上架的壁纸
    // if (wallpaperRes.data.status !== 'approved'&&(wallpaperRes.data.status !== 1)) {
    //   return {
    //     code: 404,
    //     message: '壁纸不存在或已下架'
    //   };
    // }
    
    const wallpaper = wallpaperRes.data;
    
    // 获取用户ID（如果已登录）
    let userId = null;
    if (event.uniIdToken) {
      try {
        const { uniID } = require('uni-id-common');
        const uniIDIns = uniID.createInstance({ context });
        const userInfo = await uniIDIns.checkToken(event.uniIdToken);
        if (userInfo.code === 0) {
          userId = userInfo.uid;
        }
      } catch (userError) {
        console.log('获取用户信息失败:', userError);
        // 不影响主流程
      }
    }
    
    // 检查用户是否收藏了该壁纸
    if (userId) {
      try {
        const favoriteRes = await db.collection('favorites')
          .where({
            user_id: userId,
            wallpaper_id: id
          })
          .limit(1)
          .get();
        
        wallpaper.is_favorite = favoriteRes.data && favoriteRes.data.length > 0;
      } catch (favoriteError) {
        console.log('检查收藏状态失败，默认设为未收藏:', favoriteError);
        wallpaper.is_favorite = false;
      }
    } else {
      wallpaper.is_favorite = false;
    }
    
    // 确保必要字段存在
    if (!wallpaper.download_count) {
      wallpaper.download_count = 0;
    }
    if (!wallpaper.favorite_count) {
      wallpaper.favorite_count = 0;
    }
    if (!wallpaper.tags) {
      wallpaper.tags = [];
    }
    
    // 增加浏览次数（使用try-catch避免影响主流程）
    try {
      await db.collection('wallpapers').doc(id).update({
        data: {
          views: _.inc(1)
        }
      });
      
      // 更新返回数据中的浏览次数
      wallpaper.views = (wallpaper.views || 0) + 1;
    } catch (viewError) {
      console.log('更新浏览量失败，但不影响返回结果:', viewError);
    }
    
    return {
      code: 0,
      message: '获取成功',
      data: wallpaper
    };
  } catch (error) {
    console.error('获取壁纸详情失败:', error);
    return {
      code: 500,
      message: '获取壁纸详情失败，请稍后重试',
      error: error.message,
      // 明确不是认证错误，避免前端错误判断
      isAuthError: false
    };
  }
};